package com.smart.community.user.config;

import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;

import javax.servlet.MultipartConfigElement;

/**
 * 文件上传配置类
 * 
 * 功能说明：
 * 1. 配置文件上传大小限制
 * 2. 确保Spring Boot multipart配置正确生效
 * 3. 统一文件上传配置管理
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */
@Configuration
public class FileUploadConfig {
    
    /**
     * 配置MultipartConfigElement
     * 确保文件上传大小限制正确配置
     * 
     * @return MultipartConfigElement
     */
    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        
        // 设置单个文件最大大小（10MB）
        factory.setMaxFileSize(DataSize.ofMegabytes(10));
        
        // 设置单次请求最大大小（10MB）
        factory.setMaxRequestSize(DataSize.ofMegabytes(10));
        
        // 设置文件写入磁盘的阈值（2MB）
        factory.setFileSizeThreshold(DataSize.ofMegabytes(2));
        
        return factory.createMultipartConfig();
    }
}
